
#pragma once

#include <Windows.h>
#include <WinIoCtl.h>

//
//  for read kernel memory
//

typedef struct _READ_INFO
{
    PVOID Address;
    ULONG Length;
}READ_INFO, *PREAD_INFO;

typedef struct _DRIVER_MODULE_INFO{
    PVOID DllBase;
    PVOID EntryPoint;
    ULONG SizeOfImage;
    WCHAR FullName[MAX_PATH];

}DRIVER_MODULE_INFO, *PDRIVER_MODULE_INFO;

#ifndef FILE_DEVICE_EAGLEEYES
#define FILE_DEVICE_EAGLEEYES 0x8000
#endif
#define IOCTL_EAGLEEYES_MEM_READ            CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x01, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_MEM_WRITE           CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x02, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_SSDT_INFO           CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x03, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_SSDT_ENTRY          CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x04, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_SHADOWSSDT_INFO     CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x05, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_SHADOWSSDT_ENTRY    CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x06, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_IDT_COUNTS			CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x07, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_IDT_ENTRYS			CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x08, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_PROCESS_INFO1_LEN   CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x09, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_PROCESS_INFO1		CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x0A, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_PROCESS_INFO2_LEN	CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x0B, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_PROCESS_INFO2		CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x0C, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_PROCESS_INFO3_LEN	CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x0D, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_PROCESS_INFO3		CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x0E, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_PROCESS_INFO4_LEN	CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x0F, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_PROCESS_INFO4		CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x10, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_SYSTEM_MOD_LEN	    CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x11, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_SYSTEM_MOD_INFO 	CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x12, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_FSD_HOOK_LEN	    CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x13, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_FSD_HOOK_INFO 	    CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x14, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_CALLBACK_LEN 	    CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x15, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
#define IOCTL_EAGLEEYES_CALLBACK_INFO 	    CTL_CODE(FILE_DEVICE_EAGLEEYES, 0x16, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)